#ifndef FEATUREMATCHER_H
#define FEATUREMATCHER_H

#include "opencv2/features2d/features2d.hpp"
#include "opencv2/core/core.hpp"

class FeatureMatcher
{
 
 public:
    FeatureMatcher();
    ~FeatureMatcher();

	// Find matches between keypoints
	// key_points: list of key points from OpenCV
	// descriptors: matrix of key point descriptors from OpenCV (num cols = 128)
	// correspondances: vector of incecies to key_points1 and key_points2 which correpond
	void match(
		const std::vector<cv::KeyPoint>& key_points1, 
		const std::vector<cv::KeyPoint>& key_points2, 
		const cv::Mat& descriptors1,
		const cv::Mat& descriptors2,
		std::vector<std::pair<int,int> >& correspondances);

 private:
	 // Compute Euclidean distance metric across attribute vector
	 double distance(const cv::Mat& attributes1, const cv::Mat& attributes2); 

 };

 #endif // SIFTFEATUREDETECTOR_H